[Amazon Connect] 顧客の入力を取得する 〜予定外の数字が選択されたり、タイムアウトになった時の処理について〜
1 はじめに
Amazon Connect(以下、Connect)で、問い合わせフローを作成する場合、ユーザーの入力を処理する最も基本的なブロックは、「顧客の入力を取得する」 でしょう。
ブロックは、操作の中にあります。
今回は、この 「顧客の入力を取得する」 の使用方法について整理してみたいと思います。
2 基本的な使用方法
例として、2種類の選択をユーザーに求めるブロックを作成してみました。プロンプトは「行きたいところを選択して下さい。山の場合は1を、海の場合は2を」って感じです。
ユーザーに対するプロンプトは、テキストの入力で設定し、DTMFのオプションで 1、と2を追加しました。
これにより、ユーザの押したボタンによって、処理を分岐できるようになります。
簡単にフローをつなぐと以下のようになると思います。1を選択すると「山が選択されました」、2を選択すると「海が選択されました」と発話して、終了するようになってます。
「顧客の入力を取得する」 では、オプション以外に、タイムアウトやデフォルトもありますが、全部の出力を繋がないと 「保存して発行」 が出来ないので、とりあえず「終了」に繋いでます。
3 予定外の入力
先の例では、「山は1、海は2」ということで、1と2の入力は処理しましたが、ユーザーが誤って3とか#とかを押してしまった場合の制御は考慮されていません。
実は、「顧客の入力を取得する」 では、オプションで設定した以外の入力があった場合、デフォルトに流れます。
以下の例は、デフォルトになった場合、「1若しくは2を選択して下さい」とエラーメッセージを流して、再び最初の入力に戻しているものです。
これによって、フローの流れは、以下のようになります。
C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を U:3(のボタンを押してしまう) C:1若しくは2を選択して下さい。行きたいところを選択して下さい。山の場合は1を、海の場合は2を U:1 C:山が選択されました
決して、上記の例が、「デフォルト」 の処理のベストプラクティスであると言う訳ではありません。あくまでフローの流れ上、自然にユーザーを誘導できる処理を検討するべきでしょう。
4 タイムアウト
「顧客の入力を取得する」 では、タイムアウト値を設定する所があります。
タイムアウトでは、催促して、入力待ちにしたいので、同じ 「顧客の入力を取得する」 の入力につなぎたい衝動にも駆られるのですが、残念ながら出力をそのまま入力につなぐことは出来ません。そこで、何も設定していない「プロンプトの再生」を挟むことにしました。
しかし、これは、「保存して発行」 で、エラーとなります。プロンプトに全く何も設定がないことは許されないようです。
今回は、発話内容のないSSMLを設定することで、このエラーを回避しました。
ということで、出来上がったフローは以下のようなものです。
フローの流れは次のようになります。
C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を U:・・・・(何も入力しないで5秒経過) C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を U:1 C:山が選択されました
5 入力値の保存
「顧客の入力を取得する」 では、ユーザの入力した値を保存することはできません。後で入力値を使いたいような場合は、「問い合わせ属性の設定」 を使用して、ユーザー属性として保存しておく方法があります。
問い合わせ属性の設定では、自由に値を保存できますが、一例として、選択したボタンの値をそのまま保存してみました。
上記のように保存された値は、フロー上でいつでも $.Attributes.place で参照できます。
フローの流れは次のようになります。
C:行きたいところを選択して下さい。山の場合は1を、海の場合は2を U:1 C:1が選択されました
6 最後に
Connectで、問い合わせフローを作成する場合、ユーザーの入力を処理する最も基本的なブロック言えそうな、「顧客の入力を取得する」 について、まとめてみました。
うまく使いこなして行きたいと思います。